
// date参数 一般代表 时间节点对象

//时间节点对象 转化成字符串
function dts(date, c) {
  if (date instanceof Object) {

  } else {
    date = new Date(date)
  }
  var Y = date.getFullYear()
  var M = date.getMonth() + 1;
  var D = date.getDate()
  var h = date.getHours()
  var m = date.getMinutes()
  var s = date.getSeconds()
  var w = date.getDay()
  var week = ['星期日', '星期一', '星期二', '星期三', '星期四', '星期五', '星期六']
  w = week[w]
  M < 10 && (M = '0' + M);
  D < 10 && (D = '0' + D);
  h < 10 && (h = '0' + h);
  m < 10 && (m = '0' + m);
  s < 10 && (s = '0' + s);
  if (c === 'YMD') {
    return [Y, M, D].join('-')
  } else if (c === 'YMDhms') {
    return [Y, M, D].join('-') + ' ' + [h, m, s].join(':')
  } else if (c === "YMDwhms") {
    return [Y, M, D].join('-') + ' ' + w + ' ' + [h, m, s].join(':')
  } else if (c === 'hms') {
    return [h, m, s].join(':')
  } else if (c === "YMDW") {
    return [Y, M, D].join('-') + ' ' + w
  } else if (c === "MDhms"){
    return [ M, D].join('-') + ' ' + [h, m, s].join(':')
  }

}
//字符串转换为时间节点对象
function std(date, s) {
  if (s === "YMDhms") {
    date = date.split(" ")
    var YMD = date[0];
    var hms = date[1];
    YMD = YMD.split("-");
    hms = hms.split(":");
    var Y = Number(YMD[0])
    var M = Number(YMD[1]) - 1
    var D = Number(YMD[2])
    var h = Number(hms[0])
    var m = Number(hms[1])
    var s = Number(hms[2])

    date = new Date()
    date.setDate(1)
    date.setFullYear(Y);
    date.setMonth(M);
    date.setDate(D);
    date.setHours(h);
    date.setMinutes(m);
    date.setSeconds(s);
  } else if (s === "YMD") {
    var YMD = date.split("-");
    var Y = Number(YMD[0])
    var M = Number(YMD[1]) - 1
    var D = Number(YMD[2])
    date = new Date()
    date.setDate(1)
    date.setFullYear(Y);
    date.setMonth(M);
    date.setDate(D);
    date.setHours(0);
    date.setMinutes(0);
    date.setSeconds(0);
  }
  return date
}
// 获取一个时间段的列表
// 参数结构 beginDate YYYY-MM-DD
function dateList(beginDate, sum) { // sum  +95 95  或者  -20
  var arr = [];
  beginDate = std(beginDate, "YMD")
  console.log(beginDate)
  sum = Number(sum)
  if (sum >= 0) {
    for (var i = 0; i < sum; i++) {
      if (i == 0) {
        arr.push(dts(beginDate, "YMD"))
      } else {
        beginDate.setDate(beginDate.getDate() + 1)
        arr.push(dts(beginDate, "YMD"))
      }
    }
  } else {
    for (var i = 0; i < sum; i++) {
      if (i == 0) {
        arr.push(dts(beginDate, "YMD"))
      } else {
        beginDate.setDate(beginDate.getDate() - 1)
        arr.push(dts(beginDate, "YMD"))
      }
    }
  }
  return arr

}


// 获取当天的最大时间节点 
function DateBiger(date) { //参数结构 YYYY-MM-DD 
  if (data) {

  }

}
// 获取当月的最大天数 Y是12-1
function big2(Y, M) {
  Y = parseInt(Y);
  M = parseInt(M);
  var arr = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
  if (M != 2) {
    return arr[M]
  } else if ((Y % 4 == 0 && Y % 100 != 0) || (Y % 400 == 0)) {
    return 29
  } else {
    return 28
  }
}

//  返回 这个时间 距离现在过去了多久 返回 描述语
function TimeToAlong(date) { // 接收数字
  if (date instanceof Object) {

  } else {
    date = new Date(date)
  }
  var nowdate = new Date();
  var long = nowdate - date;
  long = long / 1000;
  if (long > 24 * 60 * 60) { // 大于一天
    return dts(date,"MDhms")
  } else if (long > 60 * 60) { // 大于一小时
    return parseInt(long / 60 / 60) + "小时前"
  } else if (long > 60) { // 小于一小时
    return parseInt(long / 60) + "分钟前"
  } else if (long > 0){
    return "刚刚"
  }
}

// 距离结束时间还有多久
function TimeToEnd(date,str){
  if (date instanceof Object) {

  } else {
    date = new Date(date)
  } 
  var nowdate = new Date();
  var long = date.getTime() - nowdate.getTime();
  long = long / 1000;
  if (long > 24 * 60 * 60) { // 大于一天
    return Math.ceil(long / 60 / 60 / 24) +'天'
  } else if (long > 60 * 60) { // 大于一小时
    return Math.ceil(long / 60 / 60) + '小时'
  } else if (long > 60) { // 小于一小时
    return Math.ceil(long / 60) + '分钟'
  } else if (long > 0) {
    return long + "秒"
  }

}


module.exports = {
  dts, // 时间对象 转换为 字符串
  std, // 字符串转换为时间
  DateBiger,// 获取当天的最大时间节点 返回 毫秒数 和 文本
  big2, //当月的最大天数
  dateList, // 获取一个时间段 前多少天  或者 后 多少天
  TimeToAlong,
  TimeToEnd
}